// 输出是什么?
const user = { name: "Lydia", age: 21 };

const admin = { admin: true, ...user };

console.log(admin);

// A.
// { admin: true, user: { name: "Lydia", age: 21 } }

// B.
// { admin: true, name: "Lydia", age: 21 }

// C.
// { admin: true, user: ["Lydia", 21] }

// D.
// { admin: true }

// 正确答案：
// B
// 解析：
// 扩展运算符...为对象的组合提供了可能。你可以复制对象中的键值对，然后把它们加到另一个对象里去。在本例中，我们复制了user对象键值对，然后把它们加入到admin对象中。admin对象就拥有了这些键值对，所以结果为{ admin: true, name: "Lydia", age: 21 }.




// 输出是什么？
String.prototype.giveLydiaPizza = () => {

return 'Just give Lydia pizza already!'

}

const name = 'Lydia'

name.giveLydiaPizza()

// A.
// "Just give Lydia pizza already!"

// B.
// TypeError: not a function

// C.
// SyntaxError

// D.
// undefined

// 正确答案：
// A
// 解析：
// String 是内置的构造函数，我们可以向它添加属性。我只是在它的原型中添加了一个方法。基本类型字符串被自动转换为字符串对象，由字符串原型函数生成。因此，所有 string(string 对象)都可以访问该方法！




// 当点击按钮时，event.target是什么？
<div onclick="console.log('first div')">

<div onclick="console.log('second div')">

<button onclick="console.log('button')">

Click!

</button>

</div>

</div>

// A.
// Outer div

// B.
// Inner div

// C.
// button

// D.
// 一个包含所有嵌套元素的数组。

// 正确答案：
// C
// 解析：
// 无




// 输出是什么
const foo = () => console.log('First')

const bar = () => setTimeout(() => console.log('Second'))

const baz = () => console.log('Third')

bar()

foo()

baz()

// A.
// First Second Third

// B.
// First Third Second

// C.
// Second First Third

// D.
// Second Third First

// 正确答案：
// B
// 解析：





// 输出是什么？
(() => {

let x, y

try {

throw new Error()

} catch (x) {

(x = 1), (y = 2)

console.log(x)

}

console.log(x)

console.log(y)

})()

// A.
// 1 undefined 2

// B.
// undefined undefined undefined

// C.
// 1 1 2

// D.
// 1 undefined undefined




// 正确答案：
// A
// 解析：
// catch 代码块接收参数 x。当我们传递参数时，这与之前定义的变量 x 不同 。这个 x 是属于 catch 块级作用域的。
// 然后，我们将块级作用域中的变量赋值为 1，同时也设置了变量 y 的值。现在，我们打印块级作用域中的变量 x，值为 1。
// catch 块之外的变量 x 的值仍为 undefined， y 的值为 2。当我们在 catch 块之外执行 console.log(x) 时，返回 undefined，y 返回 2。
